Variable Data Printing
Traditionally, when printing large numbers of documents, the printing processes used have been analogue processes that required physical representations of the documents. These included bromides and/or printing plates that had to be created before printing. This has meant that it was expensive to produce customized documents and large runs of documents typically involved printing multiple copies of exactly the same document.
Customized documents may be produced using digital printing processes where a physical copy of the document does not have to be prepared before printing. Until recently, digital processes have either been expensive or the results have been of poorer quality than those produced by traditional analogue printing processes.
In the last five years, however, advances in digital printing have significantly reduced the cost to create high quality customized documents. These advances have lead to the growing popularity of variable data printing. Variable data printing software is becoming available that allows document authors to create not just single documents, but families of related documents, where each document is customized for its intended readers.
Several problems need to be solved to make high quality customized printing feasible. One problem is the quality of the printed output. Only recently have digital processes been able to approach the resolution of traditional print processes. Another problem is that typically large amounts of data are required to represent a high quality document in digital form, particularly if the document contains a number of high-resolution images. This makes it impractical to electronically transmit large numbers of customized documents to a digital printer via a computer network. A third problem is that customized documents typically require more effort and skill to create and maintain than simple documents. Customized documents are created by inserting variable data into a document template. A document template is a document that has slots for inserting variable data. A document template may include some data that is common to many documents and information defining how to lay out each custom document produced by inserting data into the variable data slots of the template. Authoring a variable data template is more difficult than authoring a simple document because the layout of the pages needs to be defined in a way that can cope with differing sizes of data or missing data items. In addition, the relationship between the template and the data needs to be defined and maintained. As such, database skills are often required in order to be able to create customized documents using variable data printing technology.
The quality of digital printing hardware has improved to the point where results are comparable to those produced by high-end analogue printing while the cost has come down dramatically. New standards such as PPML allow groups of related documents to be sent to a printer via a network without sending large amounts of repeated data. This reduces the network bandwidth required for variable data printing.
There is no easy solution to the problem of the complexity of authoring and management of variable data documents. Customized printing has been available in a crude form in word processing software for many years in the form of “mail-merge”, but mail merge only supports very crude control over the layout of the individual output documents. The most recent variable data printing software allows the creation of sophisticated, flexible layouts that adjust to the sizes and shapes of data items that may be different in each document, but these applications are still complicated and difficult to use.
Layout Models
Typically, a document containing both text and graphics is organized as a collection of items of different types. Items may be text, graphics, or other kinds of abstract objects such as groups, which are collections of items. The layout items typically have a rectangular shape or have a rectangular extent. The rules allowed by each application for defining how to lay out items represent a layout model. In variable data printing applications, the rules must define how the layout is calculated as the sizes of items change.
Hierarchical Layout Models
Current variable data printing solutions typically use hierarchical models to define layouts. These models are similar to those used for HTML and XML documents. Examples of such models are the CSS box model and XSL:FO. In such layout models, rectangular items are laid out in a rectangular layout area by stacking them vertically or horizontally inside a layout area.
In addition to horizontal and vertical stacking, another more general alternative supported by some applications is to allow items to be stacked in vertical columns or horizontal rows, like rows of words on a page. In this form of layout, if there are too many items to fit in a row or column, a new row or column is started and the excess items “wrap” to the next row of column. This is analogous to word wrapping in word processors. This way of laying out items is most useful for applications where the size of the page or layout area may vary widely, such as in web applications. Stacking is less useful for variable data printing applications, because in variable data printing applications, the quality of the layout is usually important, and when the items wrap to the next row or column, the layout often does not look pleasant.
In hierarchical layout models, complex layouts may be defined by using groups of items. A group is a rectangular layout item that contains other items and is a layout in itself. The items inside a group are laid out inside the bounding rectangle of the group.
The positions of items in a layout may be controlled by alignment options for example an item in a vertical stack may be left aligned so that the item is always as far to the left of the rectangle that contains the vertical stack as possible. Alignment may be associated with the group so all items in the group will have the same alignment, or each item in the group may have corresponding associated alignment options. Various alignment options are commonly supported including centering, left alignment and right alignment.
Positions of items may also be controlled by margins associated either with the individual items or associated with the containing layout or group. Margins define the minimum allowed distance between two adjacent items.
Constraint Based Models
Current hierarchical layout models are simpler to understand than more general constraint-based models developed previously. Constraint-based models have been used for computer aided design (CAD) applications, user interface construction and window management. In user interface construction applications, the objects to be laid out are widgets such as buttons and input fields. In window management applications, the objects to be laid out are windows that are used to represent views of data as part of a user interface for a computer operating system.
In user interface construction applications, dynamic layout constraints are used to allow a graphical user interface (GUI) to adapt to different screen resolutions and changes such as the use of different fonts and text sizes. Dynamic layout simplifies the process of building a user interface for multiple platforms.
In window management applications, the user can apply dynamic constraints to create relationships between windows that are preserved as windows are added or removed, or as windows change size or position.
CAD applications involve very general geometric constraints, and the layout models are more complex, more difficult to use, and layouts are slower to calculate than document layout models. For example, some constraint solvers used for CAD applications support specifying that two lines are parallel, which cannot be expressed using linear equations.
Constraint based layout models used for user interface (UI) and window management applications need to be fast enough to be used interactively often if the layout may need to be updated many times per second during graphical editing operations, so the layout method needs to be fast enough to support such operation. These applications typically use a specialized constraint solver to perform layout calculations. The constraint solvers used for these applications typically support linear constraints, expressed as linear equations (i.e. linear equalities), or linear inequalities, or both. Typically, these constraint solvers also have an objective function that defines the quality of a solution. The aim of the constraint solver is to minimize (or maximize) the value of the objective function without violating any of the constraints. If the objective function is also linear, then this type of problem is called a linear program. These types of problems are well-understood optimization problems and there are known algorithms for solving them. Typically, an algorithm called the simplex algorithm is used to solve problems of this type.
Given a layout problem defined by a set of constraints and an objective function, the problem may be over-constrained, such that there are no solutions. The problem may alternatively be under-constrained, such that there are many solutions, or there may be one solution. To be able to calculate a layout, a layout model needs to ensure that layouts have exactly one solution. One way to achieve this is to report the fact that there are no solutions or too many solutions to the user and allow the user to correct the problem. This is generally not an acceptable solution because it is not easy to present meaningful information to the user about why the problem is over-constrained or under-constrained. If the system is over-constrained, many constraints may be simultaneously inconsistent with each other. If the system is under-constrained, it may not be obvious how to prevent the user from adding inconsistent constraints. This is particularly difficult when the constraints are being edited using a graphical interface.
One known way to avoid having no solutions is to prioritize constraints into what is called a constraint hierarchy. If there is no solution to the constraints, constraints are ignored in reverse order of priority until a solution is possible.
A known way to avoid under-constrained problems is to use a non-linear objective function. If a suitable strictly convex function is used, the problem will always have a unique solution. Typically, a quadratic objective function is used, because there are well-known techniques for solving optimization problems with linear constraints and a quadratic objective function. The simplest of these are modifications of the simplex algorithm.
Another problem with the generation of variable data documents is that of previewing the documents being generated. Word processors and desk top publishing application often use a “print preview” function to assist the user in overall assessment of the work before committing to printing. This can be laborious where a large number of documents need to be previewed.